package com.framework.base.service;

import java.util.List;
import java.util.Map;

import com.framework.base.dao.DataOpVo;
import com.framework.base.struts.BaseVo;
import com.framework.base.struts.Result;
import com.framework.main.sys.attachment.domain.AttachmentVo;

/**
 * @Copyright @ 2011 All right reserved
 * @version 创建时间：Created on 2011-2-17
 * @author 作者：Create by HYH
 * @Email: 517372264@qq.com
 * @description 业务处理的接口基类
 * 
 */
public interface BaseService {
	/**
	 * 用于处理数据新增前的准备
	 * 
	 * @param cfg
	 */
	public String toInsert() throws Exception;

	/**
	 * 用于处理数据新增业务
	 * 
	 * @param cfg
	 * @return
	 */
	public String doInsert(BaseVo vo) throws Exception;
	
	/**
	 * 用于处理数据新增业务(带附件的情况)
	 * @author lbx
	 * @createTime 2011-06-18
	 * @param cfg
	 * @return
	 */
	public String doInsert(BaseVo vo,List<AttachmentVo> attachList) throws Exception;

	/**
	 * 用于处理数据删除的业务
	 * 
	 * @param cfg
	 * @return
	 */
	public String doDelete(String[] ids) throws Exception;


	/**
	 * 用于处理数据修改的业务
	 * 
	 * @param cfg
	 * @return
	 */
	public String doUpdate(BaseVo vo) throws Exception;
	
	/**
	 * 用于处理修改数据的同时添加附件
	 * @param vo
	 * @param attachList 上传的附件列表
	 * @return
	 * @throws Exception
	 */
	public String doUpdate(BaseVo vo,List<AttachmentVo> attachList) throws Exception;

	/**
	 * 用于获取数据并进行查看
	 * 
	 * @param cfg
	 * @return
	 */
	public Result getById(String id) throws Exception;

	/**
	 * 用于查询并显示分页数据
	 * @return
	 */
	public Result toList(Map<String,Object> paramsMap) throws Exception;
	/**
	 * 验证指定条件下的数据是否重复
	 * @param sql
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("rawtypes")
	public List toCheckData(String sql)throws Exception;
	
	/**
	 * 判断验证指定字段的值是否重复
	 * @author lbx
	 * @ceateTime 2011-07-01
	 */
	public String toDduplicateCode(String classVo,String columns,String keyColumn,String selectType,String[] columnValue);
	/**
	 * 处理需要批量处理的数据
	 * @param statementId
	 * @param paramObj
	 * @param dataOpType
	 * @param dataOpVoList
	 */
	public void collectDataOpObj(String statementId,Object paramObj,String dataOpType,List<DataOpVo> dataOpVoList);
}
